package main

/*
Given an array nums and a value val, remove all instances of that value in-place and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in- place with O(1) extra memory.
The order of elements can be changed. It doesn't matter what you leave beyond the new length.
*/
func removeElements(num []int, val int) int {
	if len(num) == 0 {
		return 0
	}
	j := 0
	for i := 0; i < len(num); i++ {
		if num[i] != val {
			if i != j {
				num[i], num[j] = num[j], num[i]
				j++
			} else {
				j++
			}
		}
	}
	return j
}
